package vengadores;


import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
 * Crea un Fondo a partir de una imagen.
 * @author Felipe Donato Arrazola Gómez
 * @author Jorge de Jesús Tinoco Huesca
 * @author Arturo Ayala Tello
 */
public class Fondo {
    private Image imagen;
    private int x;
    private final int ANCHO;
    private int y;

    /**
     * Constructor de la clase en donde se crea la imagen con el nombre del String que recibe.
     * @param archivo Recibe el String del nombre del archivo que se creará como Fondo.
     * @throws IOException Si no se puede crear la imagen.
     */
    public Fondo(String archivo) throws IOException{
        imagen = Image.createImage(archivo);
        x = 0;
        y = 0;
        ANCHO = imagen.getWidth();
    }
    /**
     * Método que mueve la imagen en la posición que se tiene actualmente más el número que se recibe como parámetro.
     * @param pasos Es el número que se le sumará en x para mover el Fondo.
     */
    public void mover(int pasos){
        x += pasos;
    }

    /**
     * Método el cual dibuja el fondo dependiendo el rango en el que se encuentre la imagen.
     * @param g Graphics, para poder dibujar en la pantalla.
     */
    public void dibujar(Graphics g){
        if ( x <= (-ANCHO + 240)){
            g.drawImage(imagen, x+ANCHO, y, Graphics.TOP|Graphics.LEFT);
            if ( x <= -ANCHO){
                x = 0;
            }
        }
        else if (x>0){
            g.drawImage(imagen,x-ANCHO,y,Graphics.TOP|Graphics.LEFT);
            if (x>=ANCHO){
                x = 0;
            }
        }
        g.drawImage(imagen, x, y, Graphics.TOP|Graphics.LEFT);
    }

    /**
     * Regresa la posición en x en la que se encuentra la imagen.
     * @return la posición en x que se encuentra la imagen.
     */
    public int getX(){
        return x;
    }

    /**
     * Se pone una nueva posición en x
     * @param x es la nueva posición en x que se pondrá.
     */
    public void setX(int x){
        this.x = x;
    }

    /**
     * Regresa la posición en y en la que se encuentra la imagen.
     * @return la posición en y que se encuentra la imagen.
     */
    public int getY(){
        return y;
    }

    /**
     * Se pone una nueva posición en y
     * @param i es la nueva posición en x que se pondrá.
     */
    public void setY(int i) {
        this.y = i;
    }

    /**
     * Método en el cual se manda la imagen a null.
     */
    public void terminar(){
        imagen = null;
    }
}